﻿using System;
using System.Web.UI;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Web;

public partial class CPD_HelpSolicitacoes : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["chapa"] == null)
        {
            Response.Redirect("../mensagens_sistema.aspx?id_mensagem=2");
        }
        else
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    string[] nomeComputador = System.Net.Dns.GetHostEntry(Request.ServerVariables["remote_addr"].ToString()).HostName.Split('.');
                    txtNomeMaquina.Text = nomeComputador[0].ToUpper();
                }
                catch (Exception)
                {
                    txtNomeMaquina.Text = "";
                }
                txtIP.Text = Request.ServerVariables["REMOTE_ADDR"].ToString();
                if (Session["cod_lotacao"].ToString() == "14")
                {
                    lblLinkSolicitarPOutraPessoa.Visible = true;
                    lblLinkSolicitarPOutraPessoa.Text = "(<a href=\"#\" onclick=\"window.open('selecionarfuncionario.aspx','','width=425px,height=150px')\">Solicitar por outra pessoa</a>)";
                }
                lblSolicitadoPor.Text = Session["nome"].ToString();
                hfChapa.Value = Session["chapa"].ToString();
            }
        }
    }
    protected void bCadastrar_Click(object sender, ImageClickEventArgs e)
    {
            if (FileUpload1.HasFile)
            {
                if (String.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".doc", true) != 0 && String.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".png", true) != 0 && String.Compare(System.IO.Path.GetExtension(FileUpload1.FileName), ".docx", true) != 0)
                {
                    lblMensagem.ForeColor = System.Drawing.Color.Red;
                    lblMensagem.Text = "Apenas arquivos com extensão .png, .doc e .docx são permitidos para envio";
                }
                else
                {
                    if (FileUpload1.PostedFile.ContentLength > 2048000)
                    {
                        lblMensagem.ForeColor = System.Drawing.Color.Red;
                        lblMensagem.Text = "Você pode enviar arquivos com até 2MB de tamanho.";
                    }
                    else
                    {
                        string nomeArquivo = System.IO.Path.GetFileNameWithoutExtension(FileUpload1.FileName) + DateTime.Now.ToString("ddMMyyyyhhmmss") + System.IO.Path.GetExtension(FileUpload1.FileName);
                        FazUploadArquivo(nomeArquivo);
                        CadastraSolicitacao(nomeArquivo);
                    }
                }

            }
            else
            {
                CadastraSolicitacao("");
            }
    }


    protected void FazUploadArquivo(string nomeArquivo)
    {
        string caminhoArquivo = Server.MapPath("~/intranet.net/cpd/printscreens/" + nomeArquivo);
        FileUpload1.SaveAs(caminhoArquivo);
    }

    protected void CadastraSolicitacao(string NomeArquivo)
    {
        try
        {
            string idSolicitacao = Session["cod_lotacao"].ToString() + DateTime.Now.ToString("ddMMyyhhmmss");

            if (InsereSolicitacao(idSolicitacao, hfChapa.Value, int.Parse(Session["cod_lotacao"].ToString()), int.Parse(ddCodCategoriaProblema.SelectedValue), txtIP.Text, txtTombamento.Text, txtRelato.Text, txtRamal.Text, NomeArquivo, txtNomeMaquina.Text))
            {
                lblMensagem.ForeColor = System.Drawing.Color.Blue;
                lblMensagem.Text = "<hr />Solicitação cadastrada com sucesso!<br />Protocolo: " + idSolicitacao;
                LimpaCampos();
                lblSolicitadoPor.Text = Session["nome"].ToString();
                hfChapa.Value = Session["chapa"].ToString();
            }
        }
        catch (Exception erro)
        {
            lblMensagem.ForeColor = System.Drawing.Color.Red;
            lblMensagem.Text = "Falha na inserção do registro.<br />Erro: " + erro.Message;
        }
     
    }

    private bool InsereSolicitacao(string idSolicitacao, string chapa, int codLotacao, int codCategoriaProblema, string ip, string tombamento, string relato, string ramal, string url, string nomeMaquina)
    {
        bool solicitacaoCadastrada = false;
        SqlConnection conexaoIntranet = new SqlConnection(ConfigurationManager.ConnectionStrings["conexao_intranet"].ConnectionString);
        try
        {
            if (conexaoIntranet != null && conexaoIntranet.State != ConnectionState.Open)
                conexaoIntranet.Open();

            string instrucao = "INSERT INTO CPDHelpSolicitacoes (IDSolicitacao, Chapa, CodLotacao, CodCategoriaProblema, IP, Tombamento, Relato, Ramal, DataSolicitacao, Status, BaseConhecimento, URL, NomeMaquina) VALUES ('"+ idSolicitacao +"','"+ chapa +"', "+ codLotacao.ToString() +", "+ ddCodCategoriaProblema.SelectedValue.ToString() +", '"+ ip +"', '"+ tombamento +"', '"+ relato +"', '"+ ramal +"', GetDate(), 'AB', 0, '"+ url +"', '"+ nomeMaquina +"')";
            SqlCommand insereSolicitacao = new SqlCommand(instrucao, conexaoIntranet);
            solicitacaoCadastrada = (insereSolicitacao.ExecuteNonQuery() > 0);
        }
        finally
        {
            if (conexaoIntranet.State == ConnectionState.Open)
                conexaoIntranet.Close();
        }

        return solicitacaoCadastrada;
    }

    protected void LimpaCampos()
    {
        txtRamal.Text = "";
        txtTombamento.Text = "";
        ddCodCategoriaProblema.SelectedIndex = -1;
        txtRelato.Text = "";
    }
}